/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.clinicariobamba.ReglasNegocio.Funciones;

import com.clinicariobamba.Accesodatos.Conexion;
import com.clinicariobamba.ReglasNegocio.Clases.Etnia;
import com.clinicariobamba.ReglasNegocio.Clases.SignosVitales;
import java.sql.ResultSet;
import java.util.ArrayList;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;

/**
 *
 * @author xavier
 */
public class FuncionesSignosVitales {

    public static ArrayList<SignosVitales> obtenerSignosVitales(int id_sv, int id_paciente) {
        try {
            Conexion con = new Conexion();
            ArrayList<SignosVitales> listSV = new ArrayList<SignosVitales>();
            try {
                String sql = null;
                if (id_sv == 0) {
                    sql = String.format("select id_sv, tiempo,hcg, pr, ps from signos_vitales as s where s.id_paciente = %d order by s.id_sv asc", id_paciente);
                } else {
                    sql = String.format("select id_sv, tiempo,hcg, pr, ps from signos_vitales as s where s.id_sv >= %d and s.id_paciente = %d order by s.id_sv asc", id_sv, id_paciente);
                }
                ResultSet rs = con.ejecutarQuery(sql);

                while (rs.next()) {
                    //aqui guardar el id del SV
                    listSV.add(new SignosVitales(rs.getInt(1), rs.getDouble(2), rs.getDouble(3), rs.getInt(4), rs.getInt(5)));
                }
            } catch (Exception e) {
                FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                        "Error de consulta de datos de la Dependencia", e.getMessage());
                FacesContext.getCurrentInstance().addMessage(null, message);
            }
            con.desconectar();
            return listSV;
        } catch (Exception ex) {
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                    "Error en la conexion a la base de datos", ex.getMessage());
            FacesContext.getCurrentInstance().addMessage(null, message);
            return new ArrayList<SignosVitales>();
        }
    }

    public static int obtenerUltimoIdSV(int id_paciente) {
        try {
            Conexion con = new Conexion();
            int idSV=-1;
            try {
                String sql = String.format("select id_sv from signos_vitales where id_paciente=%d order by tiempo DESC limit 1", id_paciente);
                ResultSet rs = con.ejecutarQuery(sql);
                while (rs.next()) {
                    idSV= rs.getInt(1);                                        
                }
            } catch (Exception e) {
                FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                        "Error de consulta de datos de la Dependencia", e.getMessage());
                FacesContext.getCurrentInstance().addMessage(null, message);
            }
            con.desconectar();
            return idSV;
        } catch (Exception ex) {
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                    "Error en la conexion a la base de datos", ex.getMessage());
            FacesContext.getCurrentInstance().addMessage(null, message);
            return -1;
        }
    }

    public static boolean insertar(SignosVitales signosVitales) throws Exception {
        boolean resultado;
        resultado = false;
        Conexion con;
        try {
            String sql = String.format("select `clinica riobamba`.`insertar_signos_vitales`(%f,%d,%d,%d)", signosVitales.getHcg(), signosVitales.getPr(), signosVitales.getPs(), signosVitales.getId_paciente());
            con = new Conexion();
            ResultSet rs = con.ejecutarQuery(sql);
            rs.next();
            resultado = rs.getBoolean(1);
            con.desconectar();
        } catch (Exception ex) {
            throw ex;
        }
        return resultado;
    }

    public static boolean eliminar(int id_paciente) throws Exception {
        boolean resultado;
        resultado = false;
        Conexion con;
        try {
            String sql = String.format("select `clinica riobamba`.`eliminar_signos_vitales`(%d)", id_paciente);
            con = new Conexion();

            ResultSet rs = con.ejecutarQuery(sql);
            rs.next();
            resultado = rs.getBoolean(1);
            con.desconectar();
        } catch (Exception ex) {
            throw ex;
        }
        return resultado;
    }
}
